The present invention relates generally to computer programming, and more particularly to resource resolution.
Many software tools which must locate resources (such as files) as part of their function have to implement a resource resolution strategy, whereby addressing information for the resource can be resolved to an actual physical storage location. Currently, each tool (including, when applicable, multiple tools that are provided within a single software product) must implement the strategy independently. This requires a considerable amount of duplicate effort by developers and a lot of effort to keep resolution strategies synchronized among different tools (which may be developed by different organizations).
As an example, software components often need to operate on collections of resources that are related by Uniform Resource Identifier (“URI”) references. A web browser, for example, operates on a Hypertext Markup Language (“HTML”) resource which can contain references to other HTML resources. The process of reading a URI reference and computing the actual location where the resource can be obtained is known generally as “URI resolution”. In modern software applications, the process of resolving a URI reference has become more complex, with different software components utilizing specialized resolution strategies specific to their problem domain. When several software components need to work together, dealing with the multiple resolution strategies makes software development more difficult. Often, in order to resolve a URI, a software developer needs to be aware of multiple resolution strategies and understand when to invoke the appropriate one. Once the appropriate strategy is determined, the task of invoking this strategy may be non-trivial. There are often significant differences between the way each resolver strategy is implemented, and the developer is therefore forced to become familiar with domain-specific peculiarities.